package cn.czh.basic.controller;

import cn.czh.basic.util.AjaxResult;
import cn.czh.basic.util.FastDfsUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {
    /**
     * 文件上传接口类
     * @RequestPart("file") file要与前端文件上传组件【elementUi】中的name属性一致
     * @param file
     * @return
     */
    @PostMapping
    public AjaxResult upload(@RequestPart("file") MultipartFile file){
        try {
            //获取原始文件名
            String originalFilename = file.getOriginalFilename(); //xxx.jpg
            //获取扩展名
            String exName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //调用工具类上传文件到fastDfs
            String fileName = FastDfsUtils.upload(file.getBytes(), exName);
            //将文件名响应到前端
            return AjaxResult.me().setResultObj(fileName);
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false,"上传失败");
        }
    }

    /**
     * 文件删除接口类
     * @RequestParam("path") 获取复杂表单数据或获取二进制文件数据
     *
     * /group1/M00/00/71/CgAIC2LL6_2Aeal6AADBrH8hy9g438.jpg
     * 把它分成 组名和文件名
     * group1：组名   M00/00/71/CgAIC2LL6_2Aeal6AADBrH8hy9g438.jpg：文件名
     * @param path
     * @return
     */
    @DeleteMapping
    public AjaxResult delete(@RequestParam("path") String path){
        try {
           // /group1/M00/00/71/CgAIC2LL6_2Aeal6AADBrH8hy9g438.jpg
           //  group1/M00/00/71/CgAIC2LL6_2Aeal6AADBrH8hy9g438.jpg
            //从索引为1位置截取
            String pathTemp = path.substring(1);
            //从索引0开始截取到第一个"/"进行截取 含头不含尾
            String groupName = pathTemp.substring(0, pathTemp.indexOf("/"));
            //从第一个"/" + 1 位置截取 就变为从M开始
            String fileName = pathTemp.substring(pathTemp.indexOf("/") + 1);
            //调用工具类删除文件
            FastDfsUtils.delete(groupName,fileName);
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false,"删除失败");
        }
    }
}
